#ifndef RTSP_SERVICE_PBUFSTR_H
#define RTSP_SERVICE_PBUFSTR_H

#define PBUFSTR_RET_ERROR     -1
#define PBUFSTR_RET_SUCCEED   0

typedef struct PBufStr {
    unsigned int str_len;       //字符串长度
    unsigned int buf_len;       //缓冲区长度
    unsigned int ridx;          //解析结束位置,用于解析匹配
    unsigned int resolver_len;  //解析长度,用于解析匹配
    char *resolver_start;    //解析开始指针,用于解析匹配
    char *resolver_end;      //解析结束指针,用于解析匹配
    char *buf;                  //缓冲区
} PBufStr;

extern void PBufStr_init(PBufStr *str, char *buf, unsigned int buf_len);

//重置字符串
extern int PBufStr_reset(PBufStr *str);

//添加字符
extern int PBufStr_char_add(PBufStr *str, char ch);

//追加字符串
extern int PBufStr_str_add(PBufStr *str, const char *add_str);

//追加n个字符
extern int PBufStr_str_addn(PBufStr *str, const char *add_str, unsigned int add_len);

extern int PBufStr_find_endchar(PBufStr *str, char endch);

extern int PBufStr_find_endstr(PBufStr *str, char *endch);

extern void PBufStr_skip_char(PBufStr *str, char ch);

extern void PBufStr_skip_nchar(PBufStr *str, char ch);

extern int PBufStr_cut_endchar(PBufStr *str, char endch);

extern int PBufStr_str_save(PBufStr *str, const char *add_str);


#endif //RTSP_SERVICE_PBUFSTR_H
